package com.xinsoft.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xinsoft.common.Response;
import com.xinsoft.entity.dto.*;
import com.xinsoft.entity.po.MesProducePlan;
import com.xinsoft.entity.vo.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 业务单据同步
 */
public interface SyncPullBillService {

    /**
     * 生产计划
     * @return
     */
    List<MesProducePlan> productionSync();

    /**
     * 生产计划
     * @return
     */
    List<MesProducePlan> productionSyncTwoYears(Date startTime, Date endTime);

    /**
     * 生产投料单
     * @return
     */
    List<ErpProductionFeedingVO> feedingSync(MesFeedingPlanPageParam mesFeedingPlanPageParam);

    /**
     * 生产投料单详情
     */
    List<ErpProductionFeedingDetailVO> feedingDetailSync(List<Integer> ids);

    /**
     * 领料出库单分页
     */
    List<ErpFeedingOutVO> feedingOutSync(ErpFeedingOutPageParam param);

    /**
     * 领料出库单分页详情
     */
    List<ErpFeedingOutDetailVO> feedingOutDetailSync(List<Integer> ids);

    /**
     * 委外合同
     * @return
     */
    List<ErpOutSourcingVO> sourcing(ErpSourcingPageParam param);

    /**
     * 委外合同详情
     * @return
     */
    List<ErpOutSourcingItemVO> sourcingItem(List<Integer> ids);

    /**
     * 委外合同详情
     * @return
     */
    List<ErpOutSourcingItemVO> sourcingItem(ErpSourcingPageParam param);

    /**
     * 委外投料
     * @return
     */
    List<ErpSourcingFeedingVO> sourcingFeeding(ErpSourcingFeedingPageParam param);

    /**
     * 委外合同详情
     * @return
     */
    List<ErpSourcingFeedingItemVO> sourcingFeedingDetail(List<Integer> ids);

    /**
     * 采购订单
     * @param param
     * @return
     */
    List<ErpPurchaseVO> purchase(ErpPurchasePageParam param);


    List<ErpPurchaseDetailVO> purchaseDetail(List<Integer> ids);
    /**
     * 收料通知
     * @return
     */
    List<ErpPurchaseNoticeVO> purchaseNoticeSync(ErpPurchaseNoticePageParam scmPurchasePageParam);

    List<ErpPurchaseNoticeItemVO> purchaseNoticeDetailSync(List<Integer> ids);

    List<ErpPurchaseNoticeItemVO> purchaseNoticeDetailSync(ErpPurchaseNoticePageParam param);

    /**
     * 发货通知
     * @return
     */
    IPage<ScmSaleNoticeListVo> saleNoticeSync(ScmSaleNoticeParam param);

    ScmSaleNoticeVo saleNoticeDetailSync(Integer id);


    List<ErpSaleVO> saleSync(ErpSalePageParam param);

    List<ErpSaleDetailVO> saleDetailSync(List<Integer> ids);

    List<ErpStocktakingVO> stocktakingList(ErpSalePageParam param);

    List<ErpStocktakingDetailVO> stocktakingDetail(Integer id);

    /**
     * 实时库存
     * @return
     */
    IPage<ErpRealTimeDto> realtimeInventory(ErpRealTimePageParam param);

}
